package com.caration.shell.workspace2D;

import android.graphics.Rect;

/**
 * Interface defining an object that can receive a drag.
 */
public interface DropTarget {

//	class DragObject {
//		public int x = -1;
//		public int y = -1;
//
//		/** index of the page we dragged from , add by lonn */
//		public int fromPageIndex = -1;
//
//		/** X offset from the upper-left corner of the cell to where we touched. */
//		public int xOffset = -1;
//
//		/** Y offset from the upper-left corner of the cell to where we touched. */
//		public int yOffset = -1;
//
//		/**
//		 * This indicates whether a drag is in final stages, either drop or
//		 * cancel. It differentiates onDragExit, since this is called when the
//		 * drag is ending, above the current drag target, or when the drag moves
//		 * off the current drag object.
//		 */
//		public boolean dragComplete = false;
//
//		/** The view that moves around while you drag. */
//		public DragView dragView = null;
//
//		/** The data associated with the object being dragged */
//		public Object dragInfo = null;
//
//		/** Where the drag originated */
//		public DragSource dragSource = null;
//
//		/** Post drag animation runnable */
//		public Runnable postAnimationRunnable = null;
//
//		/** Indicates that the drag operation was cancelled */
//		public boolean cancelled = false;
//
//		public DragObject() {
//		}
//	}
//
//	/**
//	 * Used to temporarily disable certain drop targets
//	 * 
//	 * @return boolean specifying whether this drop target is currently enabled
//	 */
//	boolean isDropEnabled();
//
//	/**
//	 * Handle an object being dropped on the DropTarget
//	 * 
//	 * @param source
//	 *            DragSource where the drag started
//	 * @param x
//	 *            X coordinate of the drop location
//	 * @param y
//	 *            Y coordinate of the drop location
//	 * @param xOffset
//	 *            Horizontal offset with the object being dragged where the
//	 *            original touch happened
//	 * @param yOffset
//	 *            Vertical offset with the object being dragged where the
//	 *            original touch happened
//	 * @param dragView
//	 *            The DragView that's being dragged around on screen.
//	 * @param dragInfo
//	 *            Data associated with the object being dragged
//	 */
//	void onDrop(DragObject dragObject);
//
//	void onDragEnter(DragObject dragObject);
//
//	void onDragOver(DragObject dragObject);
//
//	void onDragExit(DragObject dragObject);
//
//	/**
//	 * Allows a DropTarget to delegate drag and drop events to another object.
//	 * Most subclasses will should just return null from this method.
//	 * 
//	 * @param source
//	 *            DragSource where the drag started
//	 * @param x
//	 *            X coordinate of the drop location
//	 * @param y
//	 *            Y coordinate of the drop location
//	 * @param xOffset
//	 *            Horizontal offset with the object being dragged where the
//	 *            original touch happened
//	 * @param yOffset
//	 *            Vertical offset with the object being dragged where the
//	 *            original touch happened
//	 * @param dragView
//	 *            The DragView that's being dragged around on screen.
//	 * @param dragInfo
//	 *            Data associated with the object being dragged
//	 * @return The DropTarget to delegate to, or null to not delegate to another
//	 *         object.
//	 */
//	DropTarget getDropTargetDelegate(DragObject dragObject);
//
//	/**
//	 * Check if a drop action can occur at, or near, the requested location.
//	 * This will be called just before onDrop.
//	 * 
//	 * @param source
//	 *            DragSource where the drag started
//	 * @param x
//	 *            X coordinate of the drop location
//	 * @param y
//	 *            Y coordinate of the drop location
//	 * @param xOffset
//	 *            Horizontal offset with the object being dragged where the
//	 *            original touch happened
//	 * @param yOffset
//	 *            Vertical offset with the object being dragged where the
//	 *            original touch happened
//	 * @param dragView
//	 *            The DragView that's being dragged around on screen.
//	 * @param dragInfo
//	 *            Data associated with the object being dragged
//	 * @return True if the drop will be accepted, false otherwise.
//	 */
//	boolean acceptDrop(DragObject dragObject);

	// These methods are implemented in Views
	void getHitRect(Rect outRect);

	void getLocationInDragLayer(int[] loc);

	int getLeft();

	int getTop();
}
